iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
Modern Web

看Roadmap學backend overview系列 第 27

給工程師吃個定心陲-測試Testing

  • 分享至 

  • xImage
  •  

前言

關於測試,其實是一個很大的主題,所以今天的目標放在建立對測試廣泛的認識,內容包括: 測試的定義、測試的好處等,並也會簡介兩個對於後端工程師常見的測試種類: 單元測試Unit test、整合測試Integration。

什麼是測試?

定義是一種檢查應用程式是否符合預期規格並確保產品沒有例外的方法。

但就我的理解簡單來說,就是透過提前使用,試圖找到單純寫程式時沒發現的錯誤(bug)。

測試的好處

總的來說就是減少錯誤造成的長期成本,其中包括:

  • 開發/維護成本:
    越早發現bug,工程師可以用越少的成本修復他,上線後常見的問題像是相容性,IOS及Android仰賴後端提供API完成商業邏輯,如果其中發現錯誤,就算修復,也得要考慮使用舊版本的用戶是否造成crash,所以需要考慮比較複雜的修復方式。

  • 因錯誤造成的損失:
    最常見的錯誤可以從遊戲、電商裡面發現,金流方面的錯誤,可能造成的損失是直接的,比如買到低於成本的商品,或因為錯誤導致服務無法持續,損失營業收入。

  • 品牌成本:
    若系統時常發生錯誤,可能導致長期失去用戶信心,減少滿意度。

軟體測試金字塔

測試金字塔是一個概念,他列出了應該包含在自動化測試中的測試類型,意指,其實還有更多的測試是這裡沒包含到的,但對於一個後端工程師來說,有這樣的觀念最為基礎我認為是足夠了。

另外這個金字塔視覺化了這些測試的順序跟頻率,由下往上,頻率從多到少、順序由先到後。

圖 16

接著就稍微簡介一下單元測試及整合測試。

單元測試

以程式碼的最小單位來做測試,以JS來說通常就是Function。

這個測試的目的在於確保程式邏輯正確。

好處包括:

  • 執行速度快
  • 隔離相對小的錯誤範圍
  • 可靠度高

不過因為對於一開始撰寫測試的人來說,

整合測試

難以找到比這個更好的例子XD
圖 17

匯集多個模組共同測試,目的在於確保模組間的互動正確,相對於單元測試,為了納入更多互動時的變因,都會準備一個更完整的測試環境,確保完成的測試真的能確定互動無誤。

好處包括:

  • 確保模組互動正常
  • 對於程式有更高的可信度

小結

測試的好處這麼多,是不是每個網站都要寫測試呢?

will保哥其實有提到一些判斷標準可以作為參考:

所以你在開始撰寫端對端測試之前,應該還是要先想想:
你的網站是否有重要的功能需要被保護?
你的網站是否有穩定的需求需要被保護?

今天初探測試就到這邊啦~

此文章同步發表於部落格,歡迎來逛逛~

參考資料

Testing Pyramid : How to jumpstart Test Automation
What is Software Testing? Definition
鼠年全馬鐵人挑戰 WEEK 03:軟體測試的種類 - 第二集
一次搞懂單元測試、整合測試、端對端測試之間的差異


上一篇
十個好弱點,不保護嗎?-OWASP security risk
下一篇
跟著設計原則走,好維護阿自然有(單押)-設計模式software design principle
系列文
看Roadmap學backend overview30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言